package com.itheima.thread.utils.exchanger.demo01;

import java.util.concurrent.Exchanger;

public class ExchangerDemo01 {

    public static void main(String[] args) {

        // 在测试类中创建Exchanger对象
        Exchanger<String> exchanger = new Exchanger<String>() ;

        // 通过匿名内部类的方式去创建两个线程对象
        // 线程1
        new Thread(new Runnable() {

            @Override
            public void run() {

                try {

                    String s1 = "线程1所生成的数据" ;
                    String result = exchanger.exchange(s1);// 和另外一个线程进行数据交换 , 返回值代表的就是对方线程给我们传递过来的数据
                    System.out.println("线程1接收到了另外一个线程的数据：" + result);

                } catch (InterruptedException e) {
                    e.printStackTrace();
                }

            }

        }).start();

        // 线程2
        new Thread(new Runnable() {

            @Override
            public void run() {

                try {

                    String s1 = "线程2所生成的数据" ;
                    String result = exchanger.exchange(s1);// 和另外一个线程进行数据交换 , 返回值代表的就是对方线程给我们传递过来的数据
                    System.out.println("线程2接收到了另外一个线程的数据：" + result);

                } catch (InterruptedException e) {
                    e.printStackTrace();
                }

            }

        }).start();

    }

}
